VisualHMI - 串口升级Private
概述
HMI系列屏幕支持用户主板给屏幕升级工程文件,升级包为“private”,可通过VisualHMI软件生成,如下所示:
编译工程
量产向导
SD卡下载:生成“private”
1. 下载流程
1.1 进入下载模式命令
用户主板发送字符:$cfgenter#
屏幕回应: $ok#
屏幕进入下载模式,将不会响应原本的协议交互(如Modbus协议)。
[!warning|tip:注意] 注意:若用户主板没有收到屏幕应答的“ $ok#”,表示未进入下载模式,请检查用户主板发送的字符格式,以及串口通讯是否正常。
1.2 创建文件命令
用户主板发送字符:$file,[pathname],[size],[block],[baudrate]#
- [pathname]:屏幕内部存储路径
- [size]:文件字节大小
- [block]:文件传输每包数据大小,推荐选择(512+4)或者(1024+4)或者(2048+4)
- [baudrate]: 表示数据传输波特率,0表示使用当前波特率
屏幕回应
- $ok#,表示文件创建成功
- $err#,表示文件创建失败
例如: $file,3:/bin/image.bin,12345,2052,921600#,路径中的3:为屏幕的存储盘符,相当以private:。
[!warning|tip:注意] 注意:修改波特率前,一定要确保硬件串口缓冲的数据已经发送完毕!简单处理的也可以通过延时10毫秒实现
1.3 下载文件数据命令
下载文件命令发送成功之后,用户主板通过分数据包发送文件数据到屏幕。
用户主板发送数据包格式为:SN SNR DATA CHECKSUM
[SN]:序号,1字节
[SNR]:SN按位取反,1字节
[DATA]:有效数据,推荐512,1024,2048字节
[CHECKSUM]:数据包校验和,在取反,2字节
屏幕回应:
- SN SNR,表示写入成功
- 无,不应答 表示异常
用户主板从SN=0开始,分包发送数据,发送成功后递增SN(从0~255循环),屏幕收到用户主板发送的数据包后,对比SN和校验和。如果数据正确,屏幕回应“SN SNR”两个字节应答,如果错误,不回应。
[!warning|tip:注意] 注意:用户主板需要重发当前数据包。如果连续3秒,屏幕没有收到用户主板的任何数据,屏幕退出当前文件下载。最后一个数据包,如果不够一个完整数据包,数据部分需要用0填充
1.4 重启屏幕命令
用户主板发送字符:$reboot#
在下载模式下,所有文件下载完成后,用户主板发送 $reboot# ,屏幕自动重启,自动加载用户主板更新的文件。
1.5 退出下命令
用户主板发送字符:$cfgexit#
屏幕返回:$ok#
在下载模式下,所有文件下载完成后,用户主板发送$cfgexit#。屏幕退出下载模式,屏幕恢复响应原本协议的交互(如modbus协议)。
2.上位机模拟
当实体屏幕当前的串口设置为“8N1”是,可通过VisualHMI联机。通过上位机下载工程文件,点击量产向导,如下所示
[!warning|tip:注意] 注意:非8N1,上位机联机不成功,不支持上位机模拟下载
- 下载波特率:921600
点击下载
[!warning|tip:注意] 注意:RS232/TTL接口,最大支持921600,RS485,建议19200
上位机升级过程,可以用 Bus Hound 监听上位和屏幕的数据交互。若用户主板升级失败,可以对比Bus Hound监听的数据,查看差异。如下所示
上位机和虚拟屏联机,串口下载,也可以快速看到指令交互,在和用户主板发出指令对比,如下所示: